NexusPi Git Node
.github/workflows/nightly.yml 2230d76a6c2f8f4d9117534fe39068d0ae8a5e05 (2230d76a) Text, 4.95 KB
T8b949e# Nightly builds from dev: push a nightly-* tag when dev has new
T8b949e# commits since the last nightly prerelease, then dispatch build-release.yml.
T8b949e# Tag push alone does not start other workflows when using GITHUB_TOKEN
T8b949e# (GitHub Actions event loop prevention); workflow_dispatch is required.
T8b949e#
T8b949e# Pinned first-party actions (bump tag and SHA together when upgrading):
T8b949e# actions/checkout@v6.0.1 8e8c483db84b4bee98b60c0593521ed34d9990e8
T8b949e#
Tff7b72nameTb4b4b4: Ta5d6ffNightlyTa5d6ff Ta5d6ffRelease
Tff7b72onTb4b4b4:
Tff7b72scheduleTb4b4b4:
Tb4b4b4- Tff7b72cronTb4b4b4: Ta5d6ff"Ta5d6ff0Te6edf3 Ta5d6ff7Te6edf3 Ta5d6ff*Te6edf3 Ta5d6ff*Te6edf3 Ta5d6ff*Ta5d6ff"
Tff7b72workflow_dispatchTb4b4b4:
Tff7b72concurrencyTb4b4b4:
Tff7b72groupTb4b4b4: Ta5d6ffnightly-release
Tff7b72cancel-in-progressTb4b4b4: Ta5d6fffalse
Tff7b72permissionsTb4b4b4:
Tff7b72contentsTb4b4b4: Ta5d6ffread
Tff7b72jobsTb4b4b4:
Tff7b72metadataTb4b4b4:
Tff7b72nameTb4b4b4: Ta5d6ffPrepareTa5d6ff Ta5d6ffnightlyTa5d6ff Ta5d6fftag
Tff7b72runs-onTb4b4b4: Ta5d6ffubuntu-latest
Tff7b72outputsTb4b4b4:
Tff7b72tag_nameTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffsteps.meta.outputs.tag_nameTa5d6ff Ta5d6ff}}
Tff7b72commit_shaTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffsteps.meta.outputs.commit_shaTa5d6ff Ta5d6ff}}
Tff7b72skip_releaseTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffsteps.meta.outputs.skip_releaseTa5d6ff Ta5d6ff}}
Tff7b72stepsTb4b4b4:
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffCheckout
Tff7b72usesTb4b4b4: Ta5d6ffactions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 T8b949e# v6.0.1
Tff7b72withTb4b4b4:
Tff7b72refTb4b4b4: Ta5d6ffdev
Tff7b72fetch-depthTb4b4b4: Ta5d6ff0
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffComputeTa5d6ff Ta5d6ffnightlyTa5d6ff Ta5d6fftag
Tff7b72idTb4b4b4: Ta5d6ffmeta
Tff7b72envTb4b4b4:
Tff7b72GH_TOKENTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffsecrets.GITHUB_TOKENTa5d6ff Ta5d6ff}}
Tff7b72runTb4b4b4: Tb4b4b4|
Tff7b72set -euo pipefail
Tff7b72short_sha="$(git rev-parse --short=7 HEAD)"
Tff7b72full_sha="$(git rev-parse HEAD)"
Tff7b72tag="nightly-$(date -u +%Y.%m.%d)-${short_sha}"
Tff7b72skip_release=false
Tff7b72if [ "${{ github.event_name }}" = "schedule" ]; then
Tff7b72last_nightly_tag="$(gh release list --limit 50 --json tagName,isPrerelease \
Tff7b72--jq '[.[] | select(.isPrerelease) | select(.tagName | startswith("nightly-"))][0].tagName // empty')"
Tff7b72last_nightly_sha=""
Tff7b72if [ -n "${last_nightly_tag}" ]; then
Tff7b72git fetch --tags --force origin
Tff7b72last_nightly_sha="$(git rev-parse "refs/tags/${last_nightly_tag}^{commit}" 2>/dev/null || true)"
Tff7b72fi
Tff7b72if [ -n "${last_nightly_sha}" ] && [ "${last_nightly_sha}" = "${full_sha}" ]; then
Tff7b72echo "No new commits on dev since last nightly (${last_nightly_tag} @ ${last_nightly_sha}); skipping scheduled release."
Tff7b72skip_release=true
Tff7b72fi
Tff7b72fi
Tff7b72echo "tag_name=${tag}" >> "$GITHUB_OUTPUT"
Tff7b72echo "commit_sha=${full_sha}" >> "$GITHUB_OUTPUT"
Tff7b72echo "skip_release=${skip_release}" >> "$GITHUB_OUTPUT"
Tff7b72echo "Nightly tag: ${tag} @ ${full_sha} (skip_release=${skip_release})"
Tff7b72tagTb4b4b4:
Tff7b72nameTb4b4b4: Ta5d6ffTagTa5d6ff Ta5d6ffdevTa5d6ff Ta5d6ffandTa5d6ff Ta5d6ffdispatchTa5d6ff Ta5d6ffbuild-release
Tff7b72needsTb4b4b4: Ta5d6ffmetadata
Tff7b72ifTb4b4b4: Ta5d6ffneeds.metadata.outputs.skip_releaseTa5d6ff Ta5d6ff!=Ta5d6ff Ta5d6ff'true'
Tff7b72runs-onTb4b4b4: Ta5d6ffubuntu-latest
Tff7b72permissionsTb4b4b4:
Tff7b72contentsTb4b4b4: Ta5d6ffwrite
Tff7b72actionsTb4b4b4: Ta5d6ffwrite
Tff7b72stepsTb4b4b4:
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffCheckout
Tff7b72usesTb4b4b4: Ta5d6ffactions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 T8b949e# v6.0.1
Tff7b72withTb4b4b4:
Tff7b72refTb4b4b4: Ta5d6ffdev
Tff7b72fetch-depthTb4b4b4: Ta5d6ff0
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffCreateTa5d6ff Ta5d6ffandTa5d6ff Ta5d6ffpushTa5d6ff Ta5d6ffnightlyTa5d6ff Ta5d6fftag
Tff7b72envTb4b4b4:
Tff7b72TAGTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffneeds.metadata.outputs.tag_nameTa5d6ff Ta5d6ff}}
Tff7b72SHATb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffneeds.metadata.outputs.commit_shaTa5d6ff Ta5d6ff}}
Tff7b72runTb4b4b4: Tb4b4b4|
Tff7b72set -euo pipefail
Tff7b72if git rev-parse "refs/tags/${TAG}" >/dev/null 2>&1; then
Tff7b72echo "Tag ${TAG} already exists; skipping push."
Tff7b72else
Tff7b72git config user.name "github-actions[bot]"
Tff7b72git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
Tff7b72git tag -a "${TAG}" -m "Nightly build for ${SHA}" "${SHA}"
Tff7b72git push origin "${TAG}"
Tff7b72fi
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffDispatchTa5d6ff Ta5d6ffbuild-releaseTa5d6ff Ta5d6ffforTa5d6ff Ta5d6fftag
Tff7b72envTb4b4b4:
Tff7b72GH_TOKENTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffsecrets.GITHUB_TOKENTa5d6ff Ta5d6ff}}
Tff7b72TAGTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffneeds.metadata.outputs.tag_nameTa5d6ff Ta5d6ff}}
Tff7b72SHATb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffneeds.metadata.outputs.commit_shaTa5d6ff Ta5d6ff}}
Tff7b72runTb4b4b4: Tb4b4b4|
Tff7b72set -euo pipefail
Tff7b72# GITHUB_TOKEN tag pushes do not trigger other workflows; dispatch explicitly.
Tff7b72# Retry briefly so the newly pushed tag is visible to the API.
Tff7b72for attempt in 1 2 3 4 5; do
Tff7b72if gh workflow run build-release.yml --ref "refs/tags/${TAG}"; then
Tff7b72echo "Dispatched build-release.yml for ref ${TAG} (${SHA})"
Tff7b72exit 0
Tff7b72fi
Tff7b72echo "Dispatch attempt ${attempt} failed; waiting for tag to propagate..."
Tff7b72sleep 5
Tff7b72done
Tff7b72echo "Failed to dispatch build-release.yml for ${TAG}" >&2
Tff7b72exit 1
Served by rngit 1.5.2 - Generated in 0.02s